index

Überschrift

Falls du eine Taste in Linux ändern willst, musst du dich etwas mit der Theorie
auseiandersetzen.
Was Passiert wenn wir eine Taste Drücken?

1. Hardware-Ebene

2. Kernel-Ebene

In der Kernel-Ebene werden deine Tasteneingaben erfasst übersetzt und es wird ein Tastencode ausgegeben!

Schauen wir uns mal ein Event am beispiel "a" an:

	sudo pacman evtest
	evtest > evtest_00.txt
	a

mit Strg+c oder Ctrl+c beenden.

nvim evtest.txt
Zeitstempel Typ (type) Code Value
time 1732534251.711735 type 4 (EV_MSC) code 4 (MSC_SCAN) value 1e
time 1732534251.711735 type 1 (EV_KEY) code 30 (KEY_A) value 0
time 1732534251.711735 ---- ~SYN_REPORT~ -----

Event type
Scancodes

3. Geräteebene -> Filterung/Modifikation udev-regeln

xev
xev | awk -F'[ )]+' '/^KeyPress/ { a[NR+2] } NR in a { printf "%-3s %s\n", \(5, \)8 }'
showkey --keycodes (tty ohne Display-Server)
dmesg (erkennt unbekannte Tasten)
https://wiki.archlinux.org/title/Keyboard_input

unterschiede

hwdb-mapping:

udev-regeln:

anpassung

3. tastatur-mapping mit hwdb

nvim evtest.txt

darin befinden sich:
Input device ID: bus 0x3 vendor 0x17ef product 0x6047 version 0x100
Input device name: "Lenovo ThinkPad Compact USB Keyboard with TrackPoint"

	sudo nvim /etc/udev/hwdb.d/99-Mein-keyboard.hwdb
	evdev:atkbd:dmi:*			# Sollte alle eingebauten Tastaturen abdecken
	 KEYBOARD_KEY_b7=rightmeta	# T480-DE Drucktaste --> Mod-R
	 KEYBOARD_KEY_3e=leftmeta	# T480-de CapsLock -> esc

speichern und vim verlassen

	sudo nvim /etc/udev/hwdb.d/99-USB-keyboard.hwdb
	endev:input:*					# Thinkpad USB Tastatur eigenschaften über
	 ID_VENTOR_ID=17ef				# entspricht ventor0x17ef
	 ID_VENTOR_ID=6047				# entspricht product 0x6047
	 KEYBOARD_KEY_70046=rightmeta	# Thinkpad USB Tastatur PrtSc -> Mod-R
	 KEYBOARD_KEY_70039=leftmeta	# Thinkpad USB Tastatur PrtSc -> Mod-R

speichern und vim verlassen

	sudo systemd-hwdb update
	sudo udevadm trigger

einstellungen mit evtest überprüfen

Weitere Infos
weitere Filter in man hwdb beschrieben.
Arch-Linux manpages online

4. display-server (x11/wayland)

setxkbmap
setxkbmap -print -verbose 10
xkblayout-state-git
xkb-switch-git

5. anwendungsebene

lösung

hardwareebene

kernel-ebene

geschichte von key_sysrq

index